A streaming media service generally includes a content server, a content player, and a communications network connecting the content server to the content player. The content server is configured to store (or provide access to) media files (or “streams”) made available to end users. Each stream may provide a digital version of a feature length film, a television programs, a sporting event, a staged or live event captured by recorded video, and the like. Streams also include media content created specifically for distribution online. Media playback by a client device is typically referred as “streaming” because the content server transmits portions of a media file to the client device, which in turn decodes and initiates playback without waiting for the complete stream to be received.
To locate content to stream, a user may perform a “search” of media files available on the content server. In response to receiving a search query, the content server may determine a collection of streaming media titles (also referred to herein as “media titles”) relevant to the search query and serve to the client device a webpage containing links which can be clicked to access one or more of the streaming media titles. One approach for generating search results is to rank media titles based on exact and fuzzy matches of user-entered query text with the text of titles, synopses, cast, etc. of media titles. However, this approach often provides unsatisfactory results for non-title, non-actor, and non-genre-specific queries such as “funny movies” or “new releases” for which the results of text matches to the titles, synopses, cast, etc. of media titles may not meet user expectations. Further, where users search for media titles that are not available on the content server, returning available media titles based on partial query text matches may not be particularly unhelpful.